package com.softer.wxzj.service;

import com.softer.wxzj.common.entity.CommonResult;
import com.softer.wxzj.entity.*;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;

/**
 * @author Gong Zhiyang
 * @date 2018/10/10
 */
public interface FileService {
    /**
     * 删除附件
     *
     * @param id 附件ID
     * @return 删除结果
     */
    CommonResult delete(String id);

    /**
     * 上传附件
     *
     * @param file       附件
     * @param fileUpload 上传信息
     * @return 结果
     */
    CommonResult upload(MultipartFile file, FileUpload fileUpload);

    /**
     * 通过文件类型查询文件
     *
     * @param fileUpload 查询实体
     * @return 文件信息
     */
    List<FileUpload> getFileList(FileUpload fileUpload);

    /**
     * 获取业务ID的文件类型以及数量
     *
     * @param id      业务id
     * @param arcType 附件大类
     * @return 文件类型和数量
     */
    List<FileType> getFileType(String id, String arcType);

    /**
     * 校验图档上传的必传项
     *
     * @param businessId 业务ID
     * @param type       图档类型（用逗号分隔）
     * @return 校验结果
     */
    CommonResult checkFile(String businessId, String type);

    /**
     * 获取业务ID的文件类型已经数量
     *
     * @param id      业务id
     * @param arcType 附件大类(以逗号分隔)
     * @return 文件类型和数量
     */
    List<FileVO> getFileVOList(String id, String arcType);
    List<FileVO> getFileVOList(String id, String arcType, String busiNo);

    /**
     * 获取变更的图档详情
     *
     * @param modifyDetailId 变更项ID
     * @return 变更图档详情
     */
    FileDetailList getModifyFileDetail(String modifyDetailId);

    /**
     * 上传附件保存到数据库
     *
     * @param list 附件集合
     * @return 结果
     */
    CommonResult saveFile(List<FileForDialog> list);
    /**
     * 获取图片路径
     *
     * @param id       业务ID
     * @param type     大类
     * @param fileType 小类
     * @return 路径集合
     */
    List<String> getFilePathListByFileUpload(String id, String busiNo, String type, String fileType);

    /**
     * 查询busiNo关联的所有业主的某一类型的所有图档资料
     * @param busiNo
     * @param arcType
     * @return
     */
    List<BaseOwnerInfo> getBusiFileList(String busiNo, String arcType);
}
